package com.atguigu.realtime.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @ClassName: MyJedisUtil
 * @Description:
 * @Author: kele
 * @Date: 2021/4/21 19:56
 **/
public class MyJedisUtil {

    private static JedisPool pool;

    //为了保障线程安全，需要使用单例模式
    public static Jedis getRedis() {

        if(pool == null){
            synchronized (MyJedisUtil.class) {

                if(pool == null){

                    JedisPoolConfig conf = new JedisPoolConfig();
                    //设置最大连接数
                    conf.setMaxTotal(100);
                    //设置最大空闲数
                    conf.setMaxIdle(10);
                    //设置最小的等待连接数
                    conf.setMinIdle(1);
                    //设置最大等待的时间
                    conf.setMaxWaitMillis(60 * 1000);
                    //创建连接时先测试，正常的放入连接池中
                    conf.setTestOnCreate(true);
                    //分发连接时，先测试，正常的分发
                    conf.setTestOnBorrow(true);
                    //归还时测试，正常的连接归还
                    conf.setTestOnReturn(true);

                    //创建一个线程池
                    pool = new JedisPool(conf, "hadoop162", 6379);
                }
            }
        }
        return pool.getResource();
    }
}
